package com.keepers.repair.webservice

import com.keepers.repair.model.XmlRootModel
import io.reactivex.Observable
import retrofit2.adapter.rxjava2.Result
import retrofit2.http.*

interface ClientService {

    /**
     * 获取测试信息
     *
     * @return Hello,World
     */
    @GET(value = "HelloWorld")
    fun hello(): Observable<Result<XmlRootModel>>

    /**
     * 生成维修单
     * @param userId       操作用户 ID
     * @param groupGid     操作用户所属组织 ID
     * @param gpsId        巡检数据 ID
     * @param repairUserId 要分配德维修人员 ID
     * @param repairInfo   检修信息
     * @return             生成维修单结果
     */
    @GET(value = "SubmitRepairInfor")
    fun makeRepair(
        @Query(value = "UserId") userId: String,
        @Query(value = "GroupGid") groupGid: String,
        @Query(value = "GPSID") gpsId: String,
        @Query(value = "RepairUserID") repairUserId: String,
        @Query(value = "RepairInfor") repairInfo: String
    ): Observable<Result<XmlRootModel>>

    /**
     * 上传检修结果
     *
     * @param rGid   维修单ID
     * @param record 维修记录说明
     * @return       上传结果
     */
    @GET(value = "SubmitOverhaulResult")
    fun uploadOverhaulResult(
        @Query(value = "RGid") rGid: String,
        @Query(value = "MaintenanceRecord") record: String
    ): Observable<Result<XmlRootModel>>

    /**
     * 上传维修单文件
     *
     * @param fileStr  文件 Base64 字符串
     * @param fileName 文件保存名
     * @param type     文件类型（1：音频 2：视频 3:图片）
     * @param rGid     维修单 ID
     * @return         上传文件的结果
     */
    @FormUrlEncoded
    @POST(value = "RepairUploadFiles")
    fun repairUploadFiles(
        @Field(value = "SaveName") fileName: String,
        @Field(value = "type") type: Int,
        @Field(value = "RGid") rGid: String,
        @Field(value = "Base64Str") fileStr: String
    ): Observable<Result<XmlRootModel>>
}
